'''
* This is the projet for Brtc LlmOps Platform
* @Author Leon-liao <liaosiliang@alltman.com>
* @Description //TODO 
* @File: before_class.md.py
* @Time: 2025/8/13
* @All Rights Reserve By Brtc
'''
'''
对向量数据库 增删改查
'''

import dotenv
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
# 加载环境和指定向量模型
dotenv.load_dotenv()
embedding= OpenAIEmbeddings(model= 'text-embedding-3-small')



text: list= [
    "笨笨是一只很喜欢睡觉的猫咪",
    "我喜欢在夜晚听音乐，这让我感到放松。",
    "猫咪在窗台上打盹，看起来非常可爱。",
    "学习新技能是每个人都应该追求的目标。",
    "我最喜欢的食物是意大利面，尤其是番茄酱的那种。",
    "昨晚我做了一个奇怪的梦，梦见自己在太空飞行。",
    "我的手机突然关机了，让我有些焦虑。",
    "阅读是我每天都会做的事情，我觉得很充实。",
    "他们一起计划了一次周末的野餐，希望天气能好。",
    "我的狗喜欢追逐球，看起来非常开心。",
]

metadata: list= [
    {"page": 1},
    {"page": 2},
    {"page": 3},
    {"page": 4},
    {"page": 5},
    {"page": 6},
    {"page": 7},
    {"page": 8},
    {"page": 9},
    {"page": 10},
]

db= FAISS.from_texts(texts=text,
                     embedding=embedding,
                     metadatas=metadata)


# 查询
slist= db.similarity_search_with_score('我养了一只猫,名字叫笨笨', filter= lambda x: x['page'] > 5)
for i in slist:
    print(i)

'''
# 删除
print('====数据删除====')
print(len(db.index_to_docstore_id))
db.delete([db.index_to_docstore_id[0]])
print(len(db.index_to_docstore_id))

# 增加
print('====增加数据====')
db.add_texts(['小帅已经10岁了'])
print(len(db.index_to_docstore_id))
'''
# 存储到本地
print('====本地存储====')
db.save_local('./db_save')


# # 本地加载
db= FAISS.load_local('./db_save',
                     embedding,
                     allow_dangerous_deserialization=True)
slist= db.similarity_search_with_score('我养了一只猫, 名字叫笨笨')
for i in slist:
    print(i)